Configurar un microcontrolador AVR para que utilice un cristal externo en vez del oscilador interno.
El usar un cristal externo nos da una fuente de reloj mucho mas precisa y estable
Para conectar el cristal oscilador lo hacemos a los pines XTAL1 y XTAL2 del microcontrolador y a su vez tendremos que usar dos condensadores cerámicos de 22pf el circuito final es así:
Para hacer funcionar el cristal externo tendremos que reconfigurar el "lfuse" del microcontrolador.
NOTA: una vez se haga el cambio para usar el cristal externo es necesario que el cristal esté conectado al microcontrolador, si no el microcontrolador no funcionará ya que no tendrá ninguna señal de reloj, INCLUSO para reprogramar el microcontrolador es necesario tener conectado el cristal.
Para configurar el lfuse para que funcione con el cristal externo lo haremos con:
avrdude -c usbasp -p m168pa -U lfuse:w:0x7F:m
NOTA: si queremos desactivar el divisor entre 8 (CKDIV8), para usar toda la velocidad del cristal, el bit a guardar sería 0xFF
Como se ha mencionado antes para usar el microcontrolador a partir de este momento es necesario tener conectado el cristal oscilador, por lo tanto incluso aunque queramos volver a la configuración para usar el oscilador interno necesitamos del cristal, si no tenemos un cristal oscilador para conectar al microcontrolador este quedará inservible ya que no tendrá ninguna señal de reloj e incluso se imposibilita el reprogramar los fuses.
Si queremos volver a la configuración por defecto para que vuelva a usar el oscilador interno lo haríamos con:
avrdude -c usbasp -p m168pa -U lfuse:w:0x62:m
El oscilador interno es muy impreciso, se puede atrasar varios minutos por día, al usar un cristal externo nos da mucha mas precisión y estabilidad, pero aún así puede atrasarse unos segundos por día.
Si queremos usar el microcontrolador como un reloj tendremos que hacer alguna pequeña calibración a la hora de contar los segundos, ya sea añadir un pequeño retraso o un pequeño adelanto, esto podremos hacerlo siempre que observemos que la variación es constante en el tiempo, podemos compararlo con otro reloj para saber si nuestro cristal oscila mas rapido o mas lento de lo que debería.
AVR | microcontrolador | oscilador